home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1993-08-31 | 6.7 KB | 311 lines |
- >!RunImage
- Cambridge Instruction Set Emulator
- 7Seg Device Driver
- Version 1.00 (25th May 1993) Copyright
- A. M. Pereira 1993
- CDeviceName$="Stepper" :
- Device name (shown on TaskManager)
- /appname$="!stepper" :
- Directory name
- ;dirname$="<Step$Dir>" :
- Directory variable (see !Run)
- =refresh = 10 :
- Refresh rate (centi-seconds)
- 5Author$ ="Ainsley Pereira" :
- For info box
- 5Version$="1.00 (28th May 1993)" :
- For info box
- q% 256, menu 1024
- "Wimp_Initialise",200,&4B534154,DeviceName$+" Driver"
- wimp_v,task_handle
- quit =
- make_info_box
- device_startup
- iconbar =
- iconbar
- "OS_ReadMonotonicTime"
- time
- "Wimp_PollIdle",,q%,time + refresh
- event
- event
-
- 0 :
- device_refresh
-
- 1 :
- device_redraw
- (
- 2 :
- "Wimp_OpenWindow",,q%
- !)
- 3 :
- "Wimp_CloseWindow",,q%
-
- 6 :
- mouse
-
- 9 :
- menuselect
-
- 17,18 :
- message
- quit
- device_closedown
- "Wimp_CloseDown",task_handle,&4B534154
- iconbar
- !q% = -1
- q%!4 = 0
- q%!8 = 0
- q%!12 = 68
- q%!16 = 68
- q%!20 = %11000000011010
- $(q%+24)=appname$
- "Wimp_CreateIcon",,q%
- iconbar
- =iconbar
- mouse
- q%!12
- 9
- -2 :
- ibarclick
- :
- dragwin
- dragwin
- q%!4=q%!12
- "Wimp_GetWindowOutline",,q%+4
- !q%=q%!4
- q%!4=1
- "Wimp_DragBox",,q%
- make_info_box
- info 400, indirect 1024
- ip=indirect
- Visible area
- !info=&18C:info!4=&E6
- info!8=&456:info!12=&208
- scroll offsets
- info!16=0:info!20=0
- Handle to open behind
- info!24=-1
- Window flags
- info!28=&84200012
- Colours
- info!32=&01070207
- info!36=&00020103
- Work area
- info!40=0:info!44=-290
- info!48=&2CA:info!52=0
- Title icon flags
- info!56=&13D
- Workarea 'button' flags
- info!60=&3000
- Sprite area
- info!64=1
- min width/height
- info!68=1
- title data
- info!72=ip
- b%$ip="About this Device Driver"+
- c'ip+=
- ("About this Device Driver")+1
- d+info!80=
- ("About this Device Driver")+1
- info!76=ip:Null=ip
- g ip+=1
- Number of icons
- info!84=7
- Icons
- icp=info+88
- Icon 0, engraved border
- !icp=8:icp!4=-286
- icp!8=&2C4:icp!12=-42
- icp!16=&1700313D
- icp!20=Null
- $ip="r4"+
- icp!24=ip
- ip+=3:icp!28=1
- icp+=32
- Icon 1, indented header
- !icp=&26:icp!4=-78
- icp!8=&17C:icp!12=-14
- icp!16=&1700313D
- icp!20=ip
- z $ip=DeviceName$+" Driver"+
- {"ip+=
- (DeviceName$+" Driver")+1
- |%icp!28=
- (DeviceName$+" Driver")+1
- $ip="r2"+
- 0:indented=ip
- icp!24=indented
- ip+=3
- icp+=32
- Icon 2, indented message
- !icp=&22:icp!4=-142
- icp!8=&2AA:icp!12=-90
- icp!16=&1700311D
- icp!20=ip
- 2$ip="Device Driver for use with !Cambridge"+
- 4ip+=
- ("Device Driver for use with !Cambridge")+1
- icp!24=indented
- 7icp!28=
- ("Device Driver for use with !Cambridge")+1
- icp+=32
- Icon 3, Author:
- !icp=&28:icp!4=-194
- icp!8=&A8:icp!12=-162
- icp!16=&17003001
- $(icp+20)="Author :"+
- icp+=32
- Icon 4, Version:
- !icp=&28:icp!4=-258
- icp!8=&A8:icp!12=-226
- icp!16=&17003001
- $(icp+20)="Version:"+
- icp+=32
- Icon 5, Author field
- !icp=&C6:icp!4=-206
- icp!8=&2A8:icp!12=-152
- icp!16=&1700313D
- icp!20=ip:$ip=Author$+
- (Author$)+1
- icp!24=indented
- icp!28=
- (Author$)+1
- icp+=32
- Icon 6, Version field
- !icp=&C6:icp!4=-270
- icp!8=&2A8:icp!12=-216
- icp!16=&1700313D
- icp!20=ip:$ip=Version$+
- (Version$)+1
- icp!24=indented
- icp!28=
- (Version$)+1
- "Wimp_CreateWindow",,info
- infohandle
- ibarclick
- (q%!8
- %010)=%010
- menu(q%!0-64,96+(2*44))
- menuheader(pointer,width,title$)
- menupointer=pointer
- $menupointer=title$+
- menupointer?12=7
- menupointer?13=2
- menupointer?14=7
- menupointer?15=0
- menupointer!16=width
- menupointer!20=44
- menupointer!24=0
- menupointer+=28
- menuitem(subm,flags,tflags,text$)
- menupointer!0=flags
- menupointer!4=subm
- menupointer!8=tflags
- $(menupointer+12)=text$+
- menupointer+=24
- menu(x,y)
- menuheader(menu, 192, DeviceName$)
- menuitem(infohandle, 0, &7000031, "Info")
- menuitem(-1, 1<<7, &7000031, "Quit")
- "Wimp_CreateMenu",,menu,x,y
- menuselect
- !q%
- info
- 1: quit=
- "Wimp_GetPointerInfo",,q%
- (q%!8
- %001)=%001
- menu(x,y)
- message
- q%!16
- 0: quit=
- e(erl,err)
- q%!0=err
- 2$(q%+4)=
- $+" (internal error code "+
- (erl)+")"
- "Wimp_ReportError",q%,%011,DeviceName$+" Driver"
- ,fatal
- fatal=2
- reporterror(errnum,errmess$,errflags)
- q%!0=errnum
- $(q%+4)=errmess$
- "Wimp_ReportError",misc,errflags,DeviceName$+" Driver"
- selecticon(w, i, select)
- !q%=w
- q%!4=i
- select
- q%!8=1<<21:q%!12=1<<21
- q%!8=0:q%!12=1<<21
- "Wimp_SetIconState",,q%
- Device specific stuff
- Device does not provide input to Emulator
- device_startup
- Device_window 4096
- "Wimp_OpenTemplate",,dirname$+".Templates"
- "Wimp_LoadTemplate",,Device_window+4,Device_window+2048,Device_window+4096,-1,"stepper",0
- "Wimp_CreateWindow",,Device_window+4
- !Device_window
- "Wimp_CloseTemplate"
- Device_OldOutput = 0
- "Cambridge_ReadIOState"
- ,Device_Output
- Device_Step = 0
- )Device_StepRate = 7.5 :
- Degrees/step
- device_refresh
- "Wimp_GetWindowState",,Device_window
- "Wimp_OpenWindow",,Device_window
- device_closedown
- device_refresh
- "Cambridge_ReadIOState"
- b<>Device_OldOutput
- device_updatewindow(b,Device_OldOutput)
- Device_OldOutput = b
- device_updatewindow(b, Device_OldOutput)
- Device_OldOutput
- &09 :
- b=&0A
- Device_Step+=Device_StepRate
- 7
- b=&06
- Device_Step-=Device_StepRate
- &0A :
- b=&05
- Device_Step+=Device_StepRate
- 7
- b=&09
- Device_Step-=Device_StepRate
- &05 :
- b=&06
- Device_Step+=Device_StepRate
- 7
- b=&0A
- Device_Step-=Device_StepRate
- &06 :
- b=&09
- Device_Step+=Device_StepRate
- 7
- b=&05
- Device_Step-=Device_StepRate
- "Wimp_ForceRedraw",!Device_window,0,-266,344,0
- device_redraw
- !q%=!Device_window
- "Wimp_RedrawWindow",,q%
- more
- more
- "Wimp_SetColour",13
- ('
- (q%!4+172), (q%!16-133), 100
- q%!4+172, q%!16-133
- "Wimp_SetColour",10
- +=
- BY (
- (Device_Step))*100), (
- (Device_Step))*100)
- ,)
- "Wimp_GetRectangle",,q%
- more
-